package com.gofun.framework.core.utils;

import java.io.BufferedInputStream;
import java.io.IOException;
import java.io.InputStream;
import java.util.HashMap;
import java.util.Map;
import java.util.Properties;


public final class PropertiesUtils {
  
  /**
   * popCache:Properties缓存
   */
  private static Map<String, Properties> popCache = new HashMap<>();
  
  /** 
   *  @Description    : 加载Properties
   *  @return         : Properties
   *  @Creation Date  : 2016年5月3日 下午6:39:44 
   *  @Author         : chichangchao
   *  @param    clazz   : 加载Pop所在类模板
   *  @param    currentThread   : 当前线程
   *  @param    filePath   : 文件路径
   */
  public static Properties load(Class<?> clazz, Thread currentThread, String filePath) throws IOException{
    // 从缓存中获取配置文件
    Properties pop = popCache.get(clazz.getName());
    if(pop != null) return pop;
    pop = new Properties();
    // 获取权重配置文件输入字节流
    InputStream is = currentThread.getContextClassLoader().getResourceAsStream(filePath);
    // 获取到配置文件流，则标记获取文件成功，否则返回
    if(is == null) return null;
    // 处理流，利用缓存加快读取速度
    BufferedInputStream bis = new BufferedInputStream(is);
    // 加载
    pop.load(bis);
    return pop;
  }
}
